package com.study.zkyxgs1.service;

import com.study.zkyxgs1.model.User;

import java.util.List;
import java.util.Map;

/**
 * 人员管理
 * @author weixiaochun
 * @date 2022/6/14 20:35
 */
public interface UserService {

    /**
     * 插入单挑数据
     * @param user 人员信息
     * @return
     */
    void insert(User user);

    /**
     * 更新数据（默认根据id进行更新）
     * @param user 人员信息
     * @return
     */
    boolean update(User user);

    /**
     * 删除数据（默认根据id进行删除）
     * @param id 人员id
     * @return
     */
    boolean delete(String id);

    /**
     * 根据Id查询人员信息
     * @param id 人员id
     * @return
     */
    User selectById(String id);

    /**
     * 根据name查询人员信息
     * @param name 姓名
     * @return
     */
    List<User> selectByName(String name);

    /**
     * 根据age查询人员信息
     * @param age 年龄
     * @return
     */
    List<User> selectByAge(Integer age);

    /**
     * 根据age的范围查询人员信息
     * @param startAge 开始年龄
     * @param endAge 结束年龄
     * @return
     */
    List<User> selectByAgeRange(Integer startAge, Integer endAge);

    /**
     * 根据hobby查询人员信息
     * @param hobbes 爱好集合
     * @return
     */
    List<User> selectByHobby(List<String> hobbes);

    /**
     * 查询所有人员信息
     * @return
     */
    List<User> selectAll();

    /**
     * 嵌套查询description内部字段
     * @param keys 嵌套的所有key
     * @param val 查询的val
     * @return
     */
    List<User> selectByDescription(List<String> keys, Object val);

    /**
     * 嵌套查询description内部字段
     * @param map 嵌套结构数据
     * @return
     */
    List<User> selectByMap(Map<String, Object> map);
}
